package cn.iocoder.yudao.module.carbon.service.emissionfactor;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.carbon.controller.admin.emissionfactor.vo.EmissionFactorCreateReqVO;
import cn.iocoder.yudao.module.carbon.controller.admin.emissionfactor.vo.EmissionFactorExportReqVO;
import cn.iocoder.yudao.module.carbon.controller.admin.emissionfactor.vo.EmissionFactorPageReqVO;
import cn.iocoder.yudao.module.carbon.controller.admin.emissionfactor.vo.EmissionFactorUpdateReqVO;
import cn.iocoder.yudao.module.carbon.dal.dataobject.emissionfactor.EmissionFactorDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 碳排放因子 Service 接口
 *
 * @author wcl
 */
public interface EmissionFactorService {

    /**
     * 创建碳排放因子
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createEmissionFactor(@Valid EmissionFactorCreateReqVO createReqVO);

    /**
     * 更新碳排放因子
     *
     * @param updateReqVO 更新信息
     */
    void updateEmissionFactor(@Valid EmissionFactorUpdateReqVO updateReqVO);

    /**
     * 删除碳排放因子
     *
     * @param id 编号
     */
    void deleteEmissionFactor(Integer id);

    /**
     * 获得碳排放因子
     *
     * @param id 编号
     * @return 碳排放因子
     */
    EmissionFactorDO getEmissionFactor(Integer id);

    /**
     * 获得碳排放因子列表
     *
     * @param ids 编号
     * @return 碳排放因子列表
     */
    List<EmissionFactorDO> getEmissionFactorList(Collection<Integer> ids);

    /**
     * 获得碳排放因子分页
     *
     * @param pageReqVO 分页查询
     * @return 碳排放因子分页
     */
    PageResult<EmissionFactorDO> getEmissionFactorPage(EmissionFactorPageReqVO pageReqVO);

    /**
     * 获得碳排放因子列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 碳排放因子列表
     */
    List<EmissionFactorDO> getEmissionFactorList(EmissionFactorExportReqVO exportReqVO);

}
